package com.itheima.a04objectdemo01;

import com.google.gson.Gson;

/***
 *@title ObjectDemo04
 *@description <TODO description class purpose>
 *@author 12468
 *@version 1.0.0
 *@create 2024-11-27 23:48
 **/
public class ObjectDemo04 {
    public static void main(String[] args) throws CloneNotSupportedException {
        /**
         * 克隆对象细节：
         *  方法在底层会帮我们创建一个对象，并把原对象中的数据拷贝过去
         * 书写的细节：
         *  1、重写 object 中的 clone 方法
         *  2、让 JavaBean 类实现 cloneable 接口
         *  3、创建元对象并调用 clone 就可以了
         */

        int[] data = {1, 2, 3, 4, 5, 6};
        User u1 = new User(1, "zhangsan", "admin", "girl111", data);
        User u2 = (User) u1.clone();

        // 细节一：object 的clone 是浅克隆，对于 javabean 中有引用类型的属性，需要在重写 clone 方法中重写赋值新的地址值
        // int[] data1 = u1.getData();
        // data1[0] = 100;

        // System.out.println(u1);
        // System.out.println(u2);

        // 采用第三方的工具完成克隆
        Gson gson = new Gson();
        // 把对象转为一个字符串
        String s = gson.toJson(u1);
        // 再把字符串变回对象
        User user = gson.fromJson(s, User.class);

        int[] data1 = u1.getData();
        data1[0] = 100;

        System.out.println(user);

    }
}
